package com.xp.service;

import com.xp.dto.LiteFlowConvertResult;
import com.xp.dto.LogicFlowData;

/**
 * 流程数据转换服务接口
 * 负责LogicFlow数据格式与LiteFlow规则格式之间的转换
 *
 * @author xp
 * @since 2025-01-01
 */
public interface FlowDataConvertService {

    /**
     * 将LogicFlow数据转换为LiteFlow EL表达式
     *
     * @param logicFlowData LogicFlow流程图数据
     * @return LiteFlow转换结果
     */
    LiteFlowConvertResult convertToLiteFlow(LogicFlowData logicFlowData);

    /**
     * 将LogicFlow JSON字符串转换为LiteFlow EL表达式
     *
     * @param logicFlowJson LogicFlow流程图JSON字符串
     * @return LiteFlow转换结果
     */
    LiteFlowConvertResult convertToLiteFlow(String logicFlowJson);

    /**
     * 验证LogicFlow数据格式
     *
     * @param logicFlowData LogicFlow流程图数据
     * @return 验证结果
     */
    boolean validateLogicFlowData(LogicFlowData logicFlowData);

    /**
     * 验证LiteFlow EL表达式
     *
     * @param elExpression LiteFlow EL表达式
     * @return 验证结果
     */
    boolean validateLiteFlowExpression(String elExpression);

    /**
     * 生成节点组件映射
     *
     * @param logicFlowData LogicFlow流程图数据
     * @return 节点组件映射信息
     */
    String generateNodeComponentMapping(LogicFlowData logicFlowData);
}
